package response

import (
	"github.com/gin-gonic/gin"
)

// 定义请求响应结构体
type Response struct {
	Code int         `json:"code"` // 状态码
	Msg  string      `json:"msg"`  // 提示信息
	Data interface{} `json:"data"` // 响应数据
}

// 将数据转换成Json格式
func Result(code int, data interface{}, msg string, c *gin.Context) {
	c.JSON(code, gin.H{
		"code": code,
		"msg":  msg,
		"data": data,
	})
}

// 默认成功请求为 200
func Success(c *gin.Context) {
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "请求成功",
		"data": map[string]interface{}{},
	})
}

func SuccessWithCode(code int, c *gin.Context) {
	c.JSON(code, gin.H{
		"code": code,
		"msg":  "请求成功",
		"data": map[string]interface{}{},
	})
}

func SuccessWithData(data interface{}, c *gin.Context) {
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  "请求成功",
		"data": data,
	})
}

func SuccessWithMessage(msg string, c *gin.Context) {
	c.JSON(200, gin.H{
		"code": 200,
		"msg":  msg,
		"data": map[string]interface{}{},
	})
}

// 默认失败请求为 400
func Fail(c *gin.Context) {
	c.JSON(400, gin.H{
		"code": 400,
		"msg":  "请求失败",
		"data": map[string]interface{}{},
	})
}

func FailWithCode(code int, c *gin.Context) {
	c.JSON(code, gin.H{
		"code": code,
		"msg":  "请求失败",
		"data": map[string]interface{}{},
	})
}

func FailWithData(data interface{}, c *gin.Context) {
	c.JSON(400, gin.H{
		"code": 400,
		"msg":  "请求失败",
		"data": data,
	})
}

func FailWithMessage(msg string, c *gin.Context) {
	c.JSON(400, gin.H{
		"code": 400,
		"msg":  msg,
		"data": map[string]interface{}{},
	})
}
